iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
Software Development

Laravel專案練習-寶可夢管理系統系列 第 8

Day8 寶可夢專案-部署練習-SSH遠程調用

  • 分享至 

  • xImage
  •  

其實實際上在部署或是在github連接,SSH設定上都沒有說到非常複雜,但我會想分享是因為,我覺得可以遠程調用另一個作業系統蠻酷的,所以想在這個步驟多了解一些。

1. 介紹

  • SSH(Secure Shell)是什麼?

    SSH是一種應用層協議,它允許使用者在本地機器上遠程操作另一台電腦的作業系統,它提供了一個加密的通道,讓你能安全地在本機端和遠程主機之間進行通信。

  • 為什麼需要SSH遠程調用?

    在某些情況比如:在雲端建立server的時候,需要在上面安裝一些我們需要的軟體,這時候就會需要此技術(因為我們不可能真的去使用他們的主機然後操作)。

  • SSH建立基本流程

    其實遠程調用只是”看起來”很像在直接使用對方的作業系統做操作,但實際上我們是在不斷的發送請求給對方,對方執行完之後把結果回傳,然後我們才看到畫面。

    其實整個過程還是不斷地在傳輸,所以才會需要加密。

    1. 密鑰生成與部署

      • 你(或AWS)生成一對SSH密鑰:公鑰和私鑰。指令:ssh-keygen -t rsa
      • 公鑰部署到EC2伺服器上,私鑰由你儲存,不應該共享或傳送到任何地方,慣例上會存在
    2. SSH連接請求

      • 你用SSH客戶端,例如OpenSSH的ssh命令,嘗試連接到伺服器。

        指令:ssh -i "<private_key>" user@hostname(在AWS主機詳情→連線→SSH用戶端)

      • 在這個過程中,伺服器首先發送其公鑰的指紋給你,詢問你是否信任。

    3. 身份驗證(這整個過程又叫做數位簽章(digital signature))

      • 一旦你接受了伺服器的公鑰指紋,整個加密的握手過程就開始了。
      • 伺服器生成一個隨機數(稱為挑戰)並發送給你。
      • 使用者使用私鑰加密這個隨機數後,生成數位簽章然後再發送回伺服器。
      • 伺服器接收到加密的隨機數後,使用先前儲存的公鑰進行解密驗證。
      • 如果解密後的隨機數與最初發送的匹配,這意味著連接的客戶端確實擁有與公鑰相對應的私鑰,因此身份得到驗證。

      這個和一般的RSA加密稍有不同,一般的RSA加密會由公鑰加密私鑰解密。

      這個身份驗證是數位簽章的其中一個功能(其他還有像確認文件是否被串改的等等…)

    4. 加密通道建立

      • 一旦身份被驗證,客戶端和伺服器會使用密鑰交換算法建立一個共享的秘密密鑰(這個過程和Https的過程類似,後續會再分享)。
      • 從此點起,兩者之間的所有通信都使用這個共享的秘密密鑰進行對稱加密。
    5. 加密通道建立後的傳輸過程

      • 當加密通道建立後,您會向遠程伺服器發送命令請求,這些命令在遠程伺服器上執行,然後結果會被發送回來,顯示在您的屏幕上。整個過程中,所有的通信都是經過加密的,這確保了數據的安全性和完整性。

結語

目前自己都還是以這個寶可夢專案有做到的部分去研究,SSH連線要研究的地方應該是還有很多,比如檔案上傳,這個我在後續的更新資料的部分在做分享。


上一篇
Day7:寶可夢專案-部署練習-選擇專案伺服器
下一篇
Day9部署練習-專案上傳(使用git hub)
系列文
Laravel專案練習-寶可夢管理系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言